<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
    #content {
    border: 2px dashed #000;
    height: 100px;
    }
    </style>
</head>
<body>
    <a href="/news">新闻</a>
    <a href="/home">主页</a>
    <div id="content"></div>
</body>
</html>
<script>
    // history
    // 使用了 H5新增的history对象的方法 pushState replaceState
    // 监听变化的方法 onpopstate 

    // 调用方法的时候，浏览器中的地址会改变，但是不会包含在http请求里面
    // 非常容易404
    // 原因：刷新页面会把地址栏的地址当成请求地址，携带在http，发起请求，服务器不会响应就404
    let as=document.querySelectorAll('a')
    as.forEach(a=>{
        a.onclick=function(e){
            e.preventDefault()
            console.log(this.getAttribute('href'));
            let path=this.getAttribute('href');//content:this.innerText
            history.pushState({content:this.innerText},null,path)

            switch(path){
                case "/news":
                    content.innerHTML='<h1>新闻</h1>'
                    break
                case "/home":
                    content.innerHTML='<h1>主页</h1>'
            }
        }
    })
    // 事件监听：实现页面返回前进
    window.onpopstate = function(e){
        console.log(e);//只有按浏览器在-> 和 <- 时才会触发
        console.log(e.state.content);//====>获取从history.pushState传递的内容
        content.innerHTML=`<h1>${e.state.content}</h1>`
    }
</script>